// This source file is part of the Swift.org open source project
//
// Copyright (c) 2024 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See http://swift.org/LICENSE.txt for license information
// See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//

#include "CFTimeZone_WindowsMapping.h"

#if TARGET_OS_WINDOWS

typedef struct {
    char *source;
    char *dest;
} __CFTimeZoneIdentifierPair;

static __CFTimeZoneIdentifierPair __CFWindowsOlsonMapping[] = {
    { "Dateline Standard Time", "Etc/GMT+12" },
    { "UTC-11", "Etc/GMT+11" },
    { "Aleutian Standard Time", "America/Adak" },
    { "Hawaiian Standard Time", "Pacific/Honolulu" },
    { "Marquesas Standard Time", "Pacific/Marquesas" },
    { "Alaskan Standard Time", "America/Anchorage" },
    { "UTC-09", "Etc/GMT+9" },
    { "Pacific Standard Time (Mexico)", "America/Tijuana" },
    { "UTC-08", "Etc/GMT+8" },
    { "Pacific Standard Time", "America/Los_Angeles" },
    { "US Mountain Standard Time", "America/Phoenix" },
    { "Mountain Standard Time (Mexico)", "America/Chihuahua" },
    { "Mountain Standard Time", "America/Denver" },
    { "Central America Standard Time", "America/Guatemala" },
    { "Central Standard Time", "America/Chicago" },
    { "Easter Island Standard Time", "Pacific/Easter" },
    { "Central Standard Time (Mexico)", "America/Mexico_City" },
    { "Canada Central Standard Time", "America/Regina" },
    { "SA Pacific Standard Time", "America/Bogota" },
    { "Eastern Standard Time (Mexico)", "America/Cancun" },
    { "Eastern Standard Time", "America/New_York" },
    { "Haiti Standard Time", "America/Port-au-Prince" },
    { "Cuba Standard Time", "America/Havana" },
    { "US Eastern Standard Time", "America/Indianapolis" },
    { "Paraguay Standard Time", "America/Asuncion" },
    { "Atlantic Standard Time", "America/Halifax" },
    { "Venezuela Standard Time", "America/Caracas" },
    { "Central Brazilian Standard Time", "America/Cuiaba" },
    { "SA Western Standard Time", "America/La_Paz" },
    { "Pacific SA Standard Time", "America/Santiago" },
    { "Turks And Caicos Standard Time", "America/Grand_Turk" },
    { "Newfoundland Standard Time", "America/St_Johns" },
    { "Tocantins Standard Time", "America/Araguaina" },
    { "E. South America Standard Time", "America/Sao_Paulo" },
    { "SA Eastern Standard Time", "America/Cayenne" },
    { "Argentina Standard Time", "America/Buenos_Aires" },
    { "Greenland Standard Time", "America/Godthab" },
    { "Montevideo Standard Time", "America/Montevideo" },
    { "Magallanes Standard Time", "America/Punta_Arenas" },
    { "Saint Pierre Standard Time", "America/Miquelon" },
    { "Bahia Standard Time", "America/Bahia" },
    { "UTC-02", "Etc/GMT+2" },
    { "Azores Standard Time", "Atlantic/Azores" },
    { "Cape Verde Standard Time", "Atlantic/Cape_Verde" },
    { "UTC", "Etc/GMT" },
    { "GMT Standard Time", "Europe/London" },
    { "Greenwich Standard Time", "Atlantic/Reykjavik" },
    { "W. Europe Standard Time", "Europe/Berlin" },
    { "Central Europe Standard Time", "Europe/Budapest" },
    { "Romance Standard Time", "Europe/Paris" },
    { "Morocco Standard Time", "Africa/Casablanca" },
    { "Sao Tome Standard Time", "Africa/Sao_Tome" },
    { "Central European Standard Time", "Europe/Warsaw" },
    { "W. Central Africa Standard Time", "Africa/Lagos" },
    { "Jordan Standard Time", "Asia/Amman" },
    { "GTB Standard Time", "Europe/Bucharest" },
    { "Middle East Standard Time", "Asia/Beirut" },
    { "Egypt Standard Time", "Africa/Cairo" },
    { "E. Europe Standard Time", "Europe/Chisinau" },
    { "Syria Standard Time", "Asia/Damascus" },
    { "West Bank Standard Time", "Asia/Hebron" },
    { "South Africa Standard Time", "Africa/Johannesburg" },
    { "FLE Standard Time", "Europe/Kiev" },
    { "Israel Standard Time", "Asia/Jerusalem" },
    { "Kaliningrad Standard Time", "Europe/Kaliningrad" },
    { "Sudan Standard Time", "Africa/Khartoum" },
    { "Libya Standard Time", "Africa/Tripoli" },
    { "Namibia Standard Time", "Africa/Windhoek" },
    { "Arabic Standard Time", "Asia/Baghdad" },
    { "Turkey Standard Time", "Europe/Istanbul" },
    { "Arab Standard Time", "Asia/Riyadh" },
    { "Belarus Standard Time", "Europe/Minsk" },
    { "Russian Standard Time", "Europe/Moscow" },
    { "E. Africa Standard Time", "Africa/Nairobi" },
    { "Iran Standard Time", "Asia/Tehran" },
    { "Arabian Standard Time", "Asia/Dubai" },
    { "Astrakhan Standard Time", "Europe/Astrakhan" },
    { "Azerbaijan Standard Time", "Asia/Baku" },
    { "Russia Time Zone 3", "Europe/Samara" },
    { "Mauritius Standard Time", "Indian/Mauritius" },
    { "Saratov Standard Time", "Europe/Saratov" },
    { "Georgian Standard Time", "Asia/Tbilisi" },
    { "Caucasus Standard Time", "Asia/Yerevan" },
    { "Afghanistan Standard Time", "Asia/Kabul" },
    { "West Asia Standard Time", "Asia/Tashkent" },
    { "Ekaterinburg Standard Time", "Asia/Yekaterinburg" },
    { "Pakistan Standard Time", "Asia/Karachi" },
    { "India Standard Time", "Asia/Calcutta" },
    { "Sri Lanka Standard Time", "Asia/Colombo" },
    { "Nepal Standard Time", "Asia/Katmandu" },
    { "Central Asia Standard Time", "Asia/Almaty" },
    { "Bangladesh Standard Time", "Asia/Dhaka" },
    { "Omsk Standard Time", "Asia/Omsk" },
    { "Myanmar Standard Time", "Asia/Rangoon" },
    { "SE Asia Standard Time", "Asia/Bangkok" },
    { "Altai Standard Time", "Asia/Barnaul" },
    { "W. Mongolia Standard Time", "Asia/Hovd" },
    { "North Asia Standard Time", "Asia/Krasnoyarsk" },
    { "N. Central Asia Standard Time", "Asia/Novosibirsk" },
    { "Tomsk Standard Time", "Asia/Tomsk" },
    { "China Standard Time", "Asia/Shanghai" },
    { "North Asia East Standard Time", "Asia/Irkutsk" },
    { "Singapore Standard Time", "Asia/Singapore" },
    { "W. Australia Standard Time", "Australia/Perth" },
    { "Taipei Standard Time", "Asia/Taipei" },
    { "Ulaanbaatar Standard Time", "Asia/Ulaanbaatar" },
    { "Aus Central W. Standard Time", "Australia/Eucla" },
    { "Transbaikal Standard Time", "Asia/Chita" },
    { "Tokyo Standard Time", "Asia/Tokyo" },
    { "North Korea Standard Time", "Asia/Pyongyang" },
    { "Korea Standard Time", "Asia/Seoul" },
    { "Yakutsk Standard Time", "Asia/Yakutsk" },
    { "Cen. Australia Standard Time", "Australia/Adelaide" },
    { "AUS Central Standard Time", "Australia/Darwin" },
    { "E. Australia Standard Time", "Australia/Brisbane" },
    { "AUS Eastern Standard Time", "Australia/Sydney" },
    { "West Pacific Standard Time", "Pacific/Port_Moresby" },
    { "Tasmania Standard Time", "Australia/Hobart" },
    { "Vladivostok Standard Time", "Asia/Vladivostok" },
    { "Lord Howe Standard Time", "Australia/Lord_Howe" },
    { "Bougainville Standard Time", "Pacific/Bougainville" },
    { "Russia Time Zone 10", "Asia/Srednekolymsk" },
    { "Magadan Standard Time", "Asia/Magadan" },
    { "Norfolk Standard Time", "Pacific/Norfolk" },
    { "Sakhalin Standard Time", "Asia/Sakhalin" },
    { "Central Pacific Standard Time", "Pacific/Guadalcanal" },
    { "Russia Time Zone 11", "Asia/Kamchatka" },
    { "New Zealand Standard Time", "Pacific/Auckland" },
    { "UTC+12", "Etc/GMT-12" },
    { "Fiji Standard Time", "Pacific/Fiji" },
    { "Chatham Islands Standard Time", "Pacific/Chatham" },
    { "UTC+13", "Etc/GMT-13" },
    { "Tonga Standard Time", "Pacific/Tongatapu" },
    { "Samoa Standard Time", "Pacific/Apia" },
    { "Line Islands Standard Time", "Pacific/Kiritimati" },
    { 0, 0 }
};

static __CFTimeZoneIdentifierPair __CFOlsonWindowsMapping[] = {
    { "Etc/GMT+12", "Dateline Standard Time" },
    { "Pacific/Pago_Pago", "UTC-11" },
    { "Pacific/Niue", "UTC-11" },
    { "Pacific/Midway", "UTC-11" },
    { "Etc/GMT+11", "UTC-11" },
    { "America/Adak", "Aleutian Standard Time" },
    { "Pacific/Rarotonga", "Hawaiian Standard Time" },
    { "Pacific/Tahiti", "Hawaiian Standard Time" },
    { "Pacific/Johnston", "Hawaiian Standard Time" },
    { "Pacific/Honolulu", "Hawaiian Standard Time" },
    { "Etc/GMT+10", "Hawaiian Standard Time" },
    { "Pacific/Marquesas", "Marquesas Standard Time" },
    { "America/Anchorage", "Alaskan Standard Time" },
    { "Pacific/Gambier", "UTC-09" },
    { "Etc/GMT+9", "UTC-09" },
    { "America/Tijuana", "Pacific Standard Time (Mexico)" },
    { "Pacific/Pitcairn", "UTC-08" },
    { "Etc/GMT+8", "UTC-08" },
    { "America/Vancouver", "Pacific Standard Time" },
    { "America/Los_Angeles", "Pacific Standard Time" },
    { "PST8PDT", "Pacific Standard Time" },
    { "America/Dawson_Creek", "US Mountain Standard Time" },
    { "America/Hermosillo", "US Mountain Standard Time" },
    { "America/Phoenix", "US Mountain Standard Time" },
    { "Etc/GMT+7", "US Mountain Standard Time" },
    { "America/Chihuahua", "Mountain Standard Time (Mexico)" },
    { "America/Edmonton", "Mountain Standard Time" },
    { "America/Ojinaga", "Mountain Standard Time" },
    { "America/Denver", "Mountain Standard Time" },
    { "MST7MDT", "Mountain Standard Time" },
    { "America/Belize", "Central America Standard Time" },
    { "America/Costa_Rica", "Central America Standard Time" },
    { "Pacific/Galapagos", "Central America Standard Time" },
    { "America/Guatemala", "Central America Standard Time" },
    { "America/Tegucigalpa", "Central America Standard Time" },
    { "America/Managua", "Central America Standard Time" },
    { "America/El_Salvador", "Central America Standard Time" },
    { "Etc/GMT+6", "Central America Standard Time" },
    { "America/Winnipeg", "Central Standard Time" },
    { "America/Matamoros", "Central Standard Time" },
    { "America/Chicago", "Central Standard Time" },
    { "CST6CDT", "Central Standard Time" },
    { "Pacific/Easter", "Easter Island Standard Time" },
    { "America/Mexico_City", "Central Standard Time (Mexico)" },
    { "America/Regina", "Canada Central Standard Time" },
    { "America/Rio_Branco", "SA Pacific Standard Time" },
    { "America/Coral_Harbour", "SA Pacific Standard Time" },
    { "America/Bogota", "SA Pacific Standard Time" },
    { "America/Guayaquil", "SA Pacific Standard Time" },
    { "America/Jamaica", "SA Pacific Standard Time" },
    { "America/Cayman", "SA Pacific Standard Time" },
    { "America/Panama", "SA Pacific Standard Time" },
    { "America/Lima", "SA Pacific Standard Time" },
    { "Etc/GMT+5", "SA Pacific Standard Time" },
    { "America/Cancun", "Eastern Standard Time (Mexico)" },
    { "America/Nassau", "Eastern Standard Time" },
    { "America/Toronto", "Eastern Standard Time" },
    { "America/New_York", "Eastern Standard Time" },
    { "EST5EDT", "Eastern Standard Time" },
    { "America/Port-au-Prince", "Haiti Standard Time" },
    { "America/Havana", "Cuba Standard Time" },
    { "America/Indianapolis", "US Eastern Standard Time" },
    { "America/Asuncion", "Paraguay Standard Time" },
    { "Atlantic/Bermuda", "Atlantic Standard Time" },
    { "America/Halifax", "Atlantic Standard Time" },
    { "America/Thule", "Atlantic Standard Time" },
    { "America/Caracas", "Venezuela Standard Time" },
    { "America/Cuiaba", "Central Brazilian Standard Time" },
    { "America/Antigua", "SA Western Standard Time" },
    { "America/Anguilla", "SA Western Standard Time" },
    { "America/Aruba", "SA Western Standard Time" },
    { "America/Barbados", "SA Western Standard Time" },
    { "America/St_Barthelemy", "SA Western Standard Time" },
    { "America/La_Paz", "SA Western Standard Time" },
    { "America/Kralendijk", "SA Western Standard Time" },
    { "America/Manaus", "SA Western Standard Time" },
    { "America/Blanc-Sablon", "SA Western Standard Time" },
    { "America/Curacao", "SA Western Standard Time" },
    { "America/Dominica", "SA Western Standard Time" },
    { "America/Santo_Domingo", "SA Western Standard Time" },
    { "America/Grenada", "SA Western Standard Time" },
    { "America/Guadeloupe", "SA Western Standard Time" },
    { "America/Guyana", "SA Western Standard Time" },
    { "America/St_Kitts", "SA Western Standard Time" },
    { "America/St_Lucia", "SA Western Standard Time" },
    { "America/Marigot", "SA Western Standard Time" },
    { "America/Martinique", "SA Western Standard Time" },
    { "America/Montserrat", "SA Western Standard Time" },
    { "America/Puerto_Rico", "SA Western Standard Time" },
    { "America/Lower_Princes", "SA Western Standard Time" },
    { "America/Port_of_Spain", "SA Western Standard Time" },
    { "America/St_Vincent", "SA Western Standard Time" },
    { "America/Tortola", "SA Western Standard Time" },
    { "America/St_Thomas", "SA Western Standard Time" },
    { "Etc/GMT+4", "SA Western Standard Time" },
    { "America/Santiago", "Pacific SA Standard Time" },
    { "America/Grand_Turk", "Turks And Caicos Standard Time" },
    { "America/St_Johns", "Newfoundland Standard Time" },
    { "America/Araguaina", "Tocantins Standard Time" },
    { "America/Sao_Paulo", "E. South America Standard Time" },
    { "Antarctica/Rothera", "SA Eastern Standard Time" },
    { "America/Fortaleza", "SA Eastern Standard Time" },
    { "Atlantic/Stanley", "SA Eastern Standard Time" },
    { "America/Cayenne", "SA Eastern Standard Time" },
    { "America/Paramaribo", "SA Eastern Standard Time" },
    { "Etc/GMT+3", "SA Eastern Standard Time" },
    { "America/Buenos_Aires", "Argentina Standard Time" },
    { "America/Godthab", "Greenland Standard Time" },
    { "America/Montevideo", "Montevideo Standard Time" },
    { "Antarctica/Palmer", "Magallanes Standard Time" },
    { "America/Punta_Arenas", "Magallanes Standard Time" },
    { "America/Miquelon", "Saint Pierre Standard Time" },
    { "America/Bahia", "Bahia Standard Time" },
    { "America/Noronha", "UTC-02" },
    { "Atlantic/South_Georgia", "UTC-02" },
    { "Etc/GMT+2", "UTC-02" },
    { "America/Scoresbysund", "Azores Standard Time" },
    { "Atlantic/Azores", "Azores Standard Time" },
    { "Atlantic/Cape_Verde", "Cape Verde Standard Time" },
    { "Etc/GMT+1", "Cape Verde Standard Time" },
    { "America/Danmarkshavn", "UTC" },
    { "Etc/GMT", "UTC" },
    { "Atlantic/Canary", "GMT Standard Time" },
    { "Atlantic/Faeroe", "GMT Standard Time" },
    { "Europe/London", "GMT Standard Time" },
    { "Europe/Guernsey", "GMT Standard Time" },
    { "Europe/Dublin", "GMT Standard Time" },
    { "Europe/Isle_of_Man", "GMT Standard Time" },
    { "Europe/Jersey", "GMT Standard Time" },
    { "Europe/Lisbon", "GMT Standard Time" },
    { "Africa/Ouagadougou", "Greenwich Standard Time" },
    { "Africa/Abidjan", "Greenwich Standard Time" },
    { "Africa/Accra", "Greenwich Standard Time" },
    { "Africa/Banjul", "Greenwich Standard Time" },
    { "Africa/Conakry", "Greenwich Standard Time" },
    { "Africa/Bissau", "Greenwich Standard Time" },
    { "Atlantic/Reykjavik", "Greenwich Standard Time" },
    { "Africa/Monrovia", "Greenwich Standard Time" },
    { "Africa/Bamako", "Greenwich Standard Time" },
    { "Africa/Nouakchott", "Greenwich Standard Time" },
    { "Atlantic/St_Helena", "Greenwich Standard Time" },
    { "Africa/Freetown", "Greenwich Standard Time" },
    { "Africa/Dakar", "Greenwich Standard Time" },
    { "Africa/Lome", "Greenwich Standard Time" },
    { "Europe/Andorra", "W. Europe Standard Time" },
    { "Europe/Vienna", "W. Europe Standard Time" },
    { "Europe/Zurich", "W. Europe Standard Time" },
    { "Europe/Berlin", "W. Europe Standard Time" },
    { "Europe/Gibraltar", "W. Europe Standard Time" },
    { "Europe/Rome", "W. Europe Standard Time" },
    { "Europe/Vaduz", "W. Europe Standard Time" },
    { "Europe/Luxembourg", "W. Europe Standard Time" },
    { "Europe/Monaco", "W. Europe Standard Time" },
    { "Europe/Malta", "W. Europe Standard Time" },
    { "Europe/Amsterdam", "W. Europe Standard Time" },
    { "Europe/Oslo", "W. Europe Standard Time" },
    { "Europe/Stockholm", "W. Europe Standard Time" },
    { "Arctic/Longyearbyen", "W. Europe Standard Time" },
    { "Europe/San_Marino", "W. Europe Standard Time" },
    { "Europe/Vatican", "W. Europe Standard Time" },
    { "Europe/Tirane", "Central Europe Standard Time" },
    { "Europe/Prague", "Central Europe Standard Time" },
    { "Europe/Budapest", "Central Europe Standard Time" },
    { "Europe/Podgorica", "Central Europe Standard Time" },
    { "Europe/Belgrade", "Central Europe Standard Time" },
    { "Europe/Ljubljana", "Central Europe Standard Time" },
    { "Europe/Bratislava", "Central Europe Standard Time" },
    { "Europe/Brussels", "Romance Standard Time" },
    { "Europe/Copenhagen", "Romance Standard Time" },
    { "Europe/Madrid", "Romance Standard Time" },
    { "Europe/Paris", "Romance Standard Time" },
    { "Africa/El_Aaiun", "Morocco Standard Time" },
    { "Africa/Casablanca", "Morocco Standard Time" },
    { "Africa/Sao_Tome", "Sao Tome Standard Time" },
    { "Europe/Sarajevo", "Central European Standard Time" },
    { "Europe/Zagreb", "Central European Standard Time" },
    { "Europe/Skopje", "Central European Standard Time" },
    { "Europe/Warsaw", "Central European Standard Time" },
    { "Africa/Luanda", "W. Central Africa Standard Time" },
    { "Africa/Porto-Novo", "W. Central Africa Standard Time" },
    { "Africa/Kinshasa", "W. Central Africa Standard Time" },
    { "Africa/Bangui", "W. Central Africa Standard Time" },
    { "Africa/Brazzaville", "W. Central Africa Standard Time" },
    { "Africa/Douala", "W. Central Africa Standard Time" },
    { "Africa/Algiers", "W. Central Africa Standard Time" },
    { "Africa/Libreville", "W. Central Africa Standard Time" },
    { "Africa/Malabo", "W. Central Africa Standard Time" },
    { "Africa/Niamey", "W. Central Africa Standard Time" },
    { "Africa/Lagos", "W. Central Africa Standard Time" },
    { "Africa/Ndjamena", "W. Central Africa Standard Time" },
    { "Africa/Tunis", "W. Central Africa Standard Time" },
    { "Etc/GMT-1", "W. Central Africa Standard Time" },
    { "Asia/Amman", "Jordan Standard Time" },
    { "Asia/Famagusta", "GTB Standard Time" },
    { "Europe/Athens", "GTB Standard Time" },
    { "Europe/Bucharest", "GTB Standard Time" },
    { "Asia/Beirut", "Middle East Standard Time" },
    { "Africa/Cairo", "Egypt Standard Time" },
    { "Europe/Chisinau", "E. Europe Standard Time" },
    { "Asia/Damascus", "Syria Standard Time" },
    { "Asia/Hebron", "West Bank Standard Time" },
    { "Africa/Bujumbura", "South Africa Standard Time" },
    { "Africa/Gaborone", "South Africa Standard Time" },
    { "Africa/Lubumbashi", "South Africa Standard Time" },
    { "Africa/Maseru", "South Africa Standard Time" },
    { "Africa/Blantyre", "South Africa Standard Time" },
    { "Africa/Maputo", "South Africa Standard Time" },
    { "Africa/Kigali", "South Africa Standard Time" },
    { "Africa/Mbabane", "South Africa Standard Time" },
    { "Africa/Johannesburg", "South Africa Standard Time" },
    { "Africa/Lusaka", "South Africa Standard Time" },
    { "Africa/Harare", "South Africa Standard Time" },
    { "Etc/GMT-2", "South Africa Standard Time" },
    { "Europe/Mariehamn", "FLE Standard Time" },
    { "Europe/Sofia", "FLE Standard Time" },
    { "Europe/Tallinn", "FLE Standard Time" },
    { "Europe/Helsinki", "FLE Standard Time" },
    { "Europe/Vilnius", "FLE Standard Time" },
    { "Europe/Riga", "FLE Standard Time" },
    { "Europe/Kiev", "FLE Standard Time" },
    { "Asia/Jerusalem", "Israel Standard Time" },
    { "Europe/Kaliningrad", "Kaliningrad Standard Time" },
    { "Africa/Khartoum", "Sudan Standard Time" },
    { "Africa/Tripoli", "Libya Standard Time" },
    { "Africa/Windhoek", "Namibia Standard Time" },
    { "Asia/Baghdad", "Arabic Standard Time" },
    { "Europe/Istanbul", "Turkey Standard Time" },
    { "Asia/Bahrain", "Arab Standard Time" },
    { "Asia/Kuwait", "Arab Standard Time" },
    { "Asia/Qatar", "Arab Standard Time" },
    { "Asia/Riyadh", "Arab Standard Time" },
    { "Asia/Aden", "Arab Standard Time" },
    { "Europe/Minsk", "Belarus Standard Time" },
    { "Europe/Moscow", "Russian Standard Time" },
    { "Europe/Simferopol", "Russian Standard Time" },
    { "Antarctica/Syowa", "E. Africa Standard Time" },
    { "Africa/Djibouti", "E. Africa Standard Time" },
    { "Africa/Asmera", "E. Africa Standard Time" },
    { "Africa/Addis_Ababa", "E. Africa Standard Time" },
    { "Africa/Nairobi", "E. Africa Standard Time" },
    { "Indian/Comoro", "E. Africa Standard Time" },
    { "Indian/Antananarivo", "E. Africa Standard Time" },
    { "Africa/Mogadishu", "E. Africa Standard Time" },
    { "Africa/Juba", "E. Africa Standard Time" },
    { "Africa/Dar_es_Salaam", "E. Africa Standard Time" },
    { "Africa/Kampala", "E. Africa Standard Time" },
    { "Indian/Mayotte", "E. Africa Standard Time" },
    { "Etc/GMT-3", "E. Africa Standard Time" },
    { "Asia/Tehran", "Iran Standard Time" },
    { "Asia/Dubai", "Arabian Standard Time" },
    { "Asia/Muscat", "Arabian Standard Time" },
    { "Etc/GMT-4", "Arabian Standard Time" },
    { "Europe/Astrakhan", "Astrakhan Standard Time" },
    { "Asia/Baku", "Azerbaijan Standard Time" },
    { "Europe/Samara", "Russia Time Zone 3" },
    { "Indian/Mauritius", "Mauritius Standard Time" },
    { "Indian/Reunion", "Mauritius Standard Time" },
    { "Indian/Mahe", "Mauritius Standard Time" },
    { "Europe/Saratov", "Saratov Standard Time" },
    { "Asia/Tbilisi", "Georgian Standard Time" },
    { "Asia/Yerevan", "Caucasus Standard Time" },
    { "Asia/Kabul", "Afghanistan Standard Time" },
    { "Antarctica/Mawson", "West Asia Standard Time" },
    { "Asia/Oral", "West Asia Standard Time" },
    { "Indian/Maldives", "West Asia Standard Time" },
    { "Indian/Kerguelen", "West Asia Standard Time" },
    { "Asia/Dushanbe", "West Asia Standard Time" },
    { "Asia/Ashgabat", "West Asia Standard Time" },
    { "Asia/Tashkent", "West Asia Standard Time" },
    { "Etc/GMT-5", "West Asia Standard Time" },
    { "Asia/Yekaterinburg", "Ekaterinburg Standard Time" },
    { "Asia/Karachi", "Pakistan Standard Time" },
    { "Asia/Calcutta", "India Standard Time" },
    { "Asia/Colombo", "Sri Lanka Standard Time" },
    { "Asia/Katmandu", "Nepal Standard Time" },
    { "Antarctica/Vostok", "Central Asia Standard Time" },
    { "Asia/Urumqi", "Central Asia Standard Time" },
    { "Indian/Chagos", "Central Asia Standard Time" },
    { "Asia/Bishkek", "Central Asia Standard Time" },
    { "Asia/Almaty", "Central Asia Standard Time" },
    { "Etc/GMT-6", "Central Asia Standard Time" },
    { "Asia/Dhaka", "Bangladesh Standard Time" },
    { "Asia/Thimphu", "Bangladesh Standard Time" },
    { "Asia/Omsk", "Omsk Standard Time" },
    { "Indian/Cocos", "Myanmar Standard Time" },
    { "Asia/Rangoon", "Myanmar Standard Time" },
    { "Antarctica/Davis", "SE Asia Standard Time" },
    { "Indian/Christmas", "SE Asia Standard Time" },
    { "Asia/Jakarta", "SE Asia Standard Time" },
    { "Asia/Phnom_Penh", "SE Asia Standard Time" },
    { "Asia/Vientiane", "SE Asia Standard Time" },
    { "Asia/Bangkok", "SE Asia Standard Time" },
    { "Asia/Saigon", "SE Asia Standard Time" },
    { "Etc/GMT-7", "SE Asia Standard Time" },
    { "Asia/Barnaul", "Altai Standard Time" },
    { "Asia/Hovd", "W. Mongolia Standard Time" },
    { "Asia/Krasnoyarsk", "North Asia Standard Time" },
    { "Asia/Novosibirsk", "N. Central Asia Standard Time" },
    { "Asia/Tomsk", "Tomsk Standard Time" },
    { "Asia/Shanghai", "China Standard Time" },
    { "Asia/Hong_Kong", "China Standard Time" },
    { "Asia/Macau", "China Standard Time" },
    { "Asia/Irkutsk", "North Asia East Standard Time" },
    { "Asia/Brunei", "Singapore Standard Time" },
    { "Asia/Makassar", "Singapore Standard Time" },
    { "Asia/Kuala_Lumpur", "Singapore Standard Time" },
    { "Asia/Manila", "Singapore Standard Time" },
    { "Asia/Singapore", "Singapore Standard Time" },
    { "Etc/GMT-8", "Singapore Standard Time" },
    { "Antarctica/Casey", "W. Australia Standard Time" },
    { "Australia/Perth", "W. Australia Standard Time" },
    { "Asia/Taipei", "Taipei Standard Time" },
    { "Asia/Ulaanbaatar", "Ulaanbaatar Standard Time" },
    { "Australia/Eucla", "Aus Central W. Standard Time" },
    { "Asia/Chita", "Transbaikal Standard Time" },
    { "Asia/Jayapura", "Tokyo Standard Time" },
    { "Asia/Tokyo", "Tokyo Standard Time" },
    { "Pacific/Palau", "Tokyo Standard Time" },
    { "Asia/Dili", "Tokyo Standard Time" },
    { "Etc/GMT-9", "Tokyo Standard Time" },
    { "Asia/Pyongyang", "North Korea Standard Time" },
    { "Asia/Seoul", "Korea Standard Time" },
    { "Asia/Yakutsk", "Yakutsk Standard Time" },
    { "Australia/Adelaide", "Cen. Australia Standard Time" },
    { "Australia/Darwin", "AUS Central Standard Time" },
    { "Australia/Brisbane", "E. Australia Standard Time" },
    { "Australia/Sydney", "AUS Eastern Standard Time" },
    { "Antarctica/DumontDUrville", "West Pacific Standard Time" },
    { "Pacific/Truk", "West Pacific Standard Time" },
    { "Pacific/Guam", "West Pacific Standard Time" },
    { "Pacific/Saipan", "West Pacific Standard Time" },
    { "Pacific/Port_Moresby", "West Pacific Standard Time" },
    { "Etc/GMT-10", "West Pacific Standard Time" },
    { "Australia/Hobart", "Tasmania Standard Time" },
    { "Asia/Vladivostok", "Vladivostok Standard Time" },
    { "Australia/Lord_Howe", "Lord Howe Standard Time" },
    { "Pacific/Bougainville", "Bougainville Standard Time" },
    { "Asia/Srednekolymsk", "Russia Time Zone 10" },
    { "Asia/Magadan", "Magadan Standard Time" },
    { "Pacific/Norfolk", "Norfolk Standard Time" },
    { "Asia/Sakhalin", "Sakhalin Standard Time" },
    { "Antarctica/Macquarie", "Central Pacific Standard Time" },
    { "Pacific/Ponape", "Central Pacific Standard Time" },
    { "Pacific/Noumea", "Central Pacific Standard Time" },
    { "Pacific/Guadalcanal", "Central Pacific Standard Time" },
    { "Pacific/Efate", "Central Pacific Standard Time" },
    { "Etc/GMT-11", "Central Pacific Standard Time" },
    { "Asia/Kamchatka", "Russia Time Zone 11" },
    { "Antarctica/McMurdo", "New Zealand Standard Time" },
    { "Pacific/Auckland", "New Zealand Standard Time" },
    { "Pacific/Tarawa", "UTC+12" },
    { "Pacific/Majuro", "UTC+12" },
    { "Pacific/Nauru", "UTC+12" },
    { "Pacific/Funafuti", "UTC+12" },
    { "Pacific/Wake", "UTC+12" },
    { "Pacific/Wallis", "UTC+12" },
    { "Etc/GMT-12", "UTC+12" },
    { "Pacific/Fiji", "Fiji Standard Time" },
    { "Pacific/Chatham", "Chatham Islands Standard Time" },
    { "Pacific/Enderbury", "UTC+13" },
    { "Pacific/Fakaofo", "UTC+13" },
    { "Etc/GMT-13", "UTC+13" },
    { "Pacific/Tongatapu", "Tonga Standard Time" },
    { "Pacific/Apia", "Samoa Standard Time" },
    { "Pacific/Kiritimati", "Line Islands Standard Time" },
    { "Etc/GMT-14", "Line Islands Standard Time" },
    { "US/Pacific", "Pacific Standard Time" },
    { 0, 0 }
};

static CFStringRef _CFTimeZoneIdentifierPairCopyValue(__CFTimeZoneIdentifierPair *data, CFStringRef key) {
    char buffer[128] = {0};
    if (!CFStringGetCString(key, buffer, 128, kCFStringEncodingASCII)) {
        return NULL;
    }
    __CFTimeZoneIdentifierPair *current = data;
    while (current->source) {
        if (strcmp(current->source, buffer) == 0) {
            return CFStringCreateWithCString(kCFAllocatorDefault, current->dest, kCFStringEncodingASCII);
        }
        current++;
    }
    return NULL;
}

CFStringRef _CFTimeZoneCopyWindowsNameForOlsonName(CFStringRef olson) {
    return _CFTimeZoneIdentifierPairCopyValue(__CFOlsonWindowsMapping, olson);
}

CFStringRef _CFTimeZoneCopyOlsonNameForWindowsName(CFStringRef windows) {
    return _CFTimeZoneIdentifierPairCopyValue(__CFWindowsOlsonMapping, windows);
}

#endif
